//package com.study.system.course.listener;
//
//import com.alibaba.fastjson.JSON;
//import com.alibaba.otter.canal.protocol.CanalEntry;
//import com.study.system.course.config.CourseMQConfig;
//import com.study.system.course.service.CourseService;
//import com.study.system.entity.Course;
//import com.xpand.starter.canal.annotation.CanalEventListener;
//import com.xpand.starter.canal.annotation.ListenPoint;
//import jakarta.annotation.Resource;
//import org.springframework.amqp.rabbit.core.RabbitTemplate;
//
///**
// * 事件监听器
// */
//@CanalEventListener
//public class CanalListener {
//
//    @Resource
//    private CourseService courseService;
//
//    @Resource
//    private RabbitTemplate rabbitTemplate;
//
//    /**
//     * 监听 schema数据库 table 表
//     */
//    @ListenPoint(schema = "edu_course",table = "course")
//    public void updateData(CanalEntry.EventType eventType, CanalEntry.RowData rowData){
//        System.out.println("修改前");
//        //打印改变之前的数据
//        rowData.getBeforeColumnsList().forEach((c)-> System.out.print(c.getName()+":"+c.getValue()+"\t"));
//        System.out.println("\n修改后");
//        //打印改变之后的数据
//        rowData.getAfterColumnsList().forEach((c)-> System.out.print(c.getName()+":"+c.getValue()+"\t"));
//        //对操作类型进行判断
//        if("DELETE".equals(eventType.name())){
//            //如果是删除，遍历所有的字段，获得id的值
//            rowData.getBeforeColumnsList().forEach(column -> {
//                if("id".equals(column.getName())){
//                    //把id的值用mq发送给搜索服务
//                    rabbitTemplate.convertAndSend(CourseMQConfig.COURSE_EXCHANGE,CourseMQConfig.KEY_DELETE,
//                            Long.valueOf(column.getValue()));
//                }
//            });
//        }else if("INSERT".equals(eventType.name()) || "UPDATE".equals(eventType.name())){
//            //如果是插入或更新，就遍历修改后的数据，获得课程信息，转换为json，发送给搜索服务
//            rowData.getAfterColumnsList().forEach(column -> {
//                if("id".equals(column.getName())){
//                    Course course = courseService.getCourseById(Integer.valueOf(column.getValue()));
//                    String json = JSON.toJSONString(course);
//                    rabbitTemplate.convertAndSend(CourseMQConfig.COURSE_EXCHANGE,CourseMQConfig.KEY_UPDATE,json);
//                }
//            });
//        }
//    }
//}